/*  
 *  Nanjing JIYU Technology Co.,Ltd All rights reserved.
 *  Copyright (C) 2022 
 *  ==============================================================
 * 
 *  main.c 
 *    主循环，底盘控制逻辑
 *
 *  --------------------------------------------------------------
 *  
 */

#include "main.h"

#include "status.h"
#include "automatic.h"
#include "controlled.h"

#include "device.h"
#include "peripheral.h"

#include "track.h"


  

int main(void)
{
  HAL_Init();                     /* HAL相关功能初始化 */
  system_clock_init();            /* 系统时钟设置与延时功能设置 */


  peripheral_init();              /* MCU外设初始化 */

	
//	delay_ms(2000);
//	
//while(1)
//{
//	status.ctrl_cmd = uart3_rx_data;
//	ctrl_run(status.ctrl_cmd); 
//}
//	
	
//	status.location= '2';
//	status.destination = '3';
//	 auto_run(status.location, status.destination);
//static	u16 value;
	
	
//	
  while (1)
  {
    
    /* 控制指令处理 */
    if (status.new_msg > 0)       /* 未处理的新消息数>1 */
    {
      hostpc_cmd_refresh();       /* 根据指令更新status结构体 */

      if (status.control_mode == automatic) //如果收到的数据大于“0”小于“8”，自动模式
      {
        auto_run(status.location, status.destination);    /* 从当前位置运行到目标位置 */
      }

      else /* status.control_mode == controlled */
      {
        ctrl_run(status.ctrl_cmd);                        /* 根据hostpc指令运行 */
      }

      hostpc_send(0x01);          /* 通知上位机执行完毕 */
      status.new_msg = 0;         /* 处理完所有消息了 */
    }
		
//		value =(GRAY_F_L << 5) | (GRAY_F_M << 4) | (GRAY_F_R<<3) | (GRAY_B_L << 2) | (GRAY_B_M << 1) | GRAY_B_R;

  }
//delay_ms(2000);track_drive_test(); //循迹函数，死循环，到达cross会停下需重启
}

